package com.jsptpd.smartauth.common.util;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;

import sun.misc.BASE64Encoder;

/**
 * Java 处理图片 base64 编码的相互转换
 *
 * @Auther: HASEE
 * @Date: 2018/5/16 10:50
 * @Description:
 */
public class ImageUtil {
    /**
     * @param imgStr base64编码字符串
     * @param path   图片路径-具体到文件
     * @return
     * @Description: 将base64编码字符串转换为图片
     * @Author:
     * @CreateTime:
     */
//    public static boolean generateImage(String imgStr, String path) {
//        　　if (imgStr == null)
//        　　　　return false;
//        　　BASE64Decoder decoder = new BASE64Decoder();
//        　　try {
//            　　　　// 解密
//            　　　　byte[] b = decoder.decodeBuffer(imgStr);
//            　　　　// 处理数据
//            　　　　for (int i = 0; i < b.length; ++i) {
//                　　　　　　if (b[i] < 0) {
//                    　　　　　　　　b[i] += 256;
//                    　　　　　　}
//                　　　　}
//            　　　　OutputStream out = new FileOutputStream(path);
//            　　　　out.write(b);
//            　　　　out.flush();
//            　　　　out.close();
//            　　　　return true;
//            　　} catch (Exception e) {
//            　　　　return false;
//            　　}
//    }

    /**
     * @return
     * @Description: 根据图片地址转换为base64编码字符串
     * @Author:
     * @CreateTime:
     */
    public static String getImageStr(String imgFile) {
        InputStream inputStream = null;
        byte[] data = null;
        try {
            inputStream = new FileInputStream(imgFile);
            data = new byte[inputStream.available()];
            inputStream.read(data);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 加密
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);
    }

    /**
     * 获取服务器IP地址
     *
     * @return
     */
    public static String getServerIp() {
        String SERVER_IP = null;
        try {
            Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
            InetAddress ip = null;
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
                ip = (InetAddress) ni.getInetAddresses().nextElement();
                SERVER_IP = ip.getHostAddress();
                if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
                        && ip.getHostAddress().indexOf(":") == -1) {
                    SERVER_IP = ip.getHostAddress();
                    break;
                } else {
                    ip = null;
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
        return SERVER_IP;
    }

    public static String getServerIp1() {
        InetAddress address = null;//获取的是本地的IP地址 //PC-20140317PXKX/192.168.0.121
        String hostAddress = null;
        try {
            address = InetAddress.getLocalHost();
            hostAddress = address.getHostAddress();//192.168.0.121
            return hostAddress;
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return null;
    }

}
